package com.cskaoyan._06cast;

/**
 * @description:
 * @author: 景天
 * @date: 2023/1/29 10:59
 **/
/*
数据类型转换
1.自动类型转换
    "自动" 不用程序员处理,编译器自行处理
    小范围--->大范围
2.强制类型转换
    需要程序员在代码中显式处理
    大范围--->小范围
    // 做强转要慎重考虑再进行
    目标数据类型 变量名 = (目标数据类型)(被转换变量的变量名);

首先要明确的是：

基本数据类型的数据类型转换必须在byte、short、int、long、float、double
这些数值类型和char类型之间进行，boolean类型不参与基本数据类型的数据类型转换。
 */
public class Demo {
    public static void main(String[] args) {
        // 自动类型转换 小--->大
        byte b1 = 1;
        // byte--> short
        short b2 = b1;
        // short ---> int
        int b3 = b2;

        float f1 = 3.14F;
        // float---> double
        double f2 = f1;

        // int --> double
        double b4 = b3;


        // 如果大范围--->小范围
        int a1 = 10;
        // int--->byte 编译错误,不允许
        // Incompatible types. Found: 'int', required: 'byte'
        // byte a2 = a1;
        // 强制类型转换
        // 目标数据类型 变量名 = (目标数据类型)(被转换变量的变量名);
        int a3 = 11;
        // int ---> byte 大--->小
        // 需要手动处理,程序员写代码处理
        byte a4 = (byte) a3;

        // 溢出
        int a5 = 128;
        byte a6 = (byte) a5;
        System.out.println("a6 = " + a6);

        double d1 = 3.14;
        // double ---> float
        float d2 = (float) d1;
        // 快捷键 .cast 或者用alt+enter(代码只能补全)
        float d3 = ((float) d1);
        float d4 = (float) d1;
        // String s = "abc";
    }
}
